package cn.tannn.ops.nginx.dao;

import cn.tannn.jdevelops.jpa.repository.JpaBasicsRepository;
import cn.tannn.ops.nginx.entity.Domains;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Date;
import java.util.List;

/**
 * 域名
 *
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @version V1.0
 * @date 2024/8/22 下午4:20
 */
public interface DomainsDao extends JpaBasicsRepository<Domains,Long> {

    /**
     * 查询 非空webhook 的域名
     * @return Domains
     */
    List<Domains> findByWebhookIdIsNotNull();

    /**
     * 查询 有效期结束时间 >= input
     * @param expiryAfter 有效期结束时间
     * @return Domains
     */
    List<Domains> findByExpiryAfterGreaterThanEqual(Date expiryAfter);

    /**
     * 查询 非空webhook 的域名
     * todo 多数据的支持可以考虑把这个函数计算放到 java 里做
     * @param expiryDay 过期时间小于指定天数的数据
     * @return Domains
     */
    @Query(
        value = """
            SELECT *
            FROM nginx_domain d
            WHERE d.expiry_after <= DATE_ADD(NOW(), INTERVAL :expiryDay DAY);
        """,nativeQuery = true
    )
    List<Domains> findByWebhookIdIsNotNull(@Param("expiryDay") Integer expiryDay);
}
